package com.sugon.modules.analyse.service;

import com.sugon.modules.analyse.model.BarChartOptionModel;
import com.sugon.modules.analyse.model.chart.LineChartDataModel;
import com.sugon.modules.analyse.model.chart.PieChartOptionDataVO;
import com.sugon.modules.analyse.model.vo.FaultTopStatVO;
import com.sugon.modules.analyse.model.vo.MoldFaultRateStatVO;
import com.sugon.modules.analyse.model.vo.WorkshopRepairStatVO;

import java.util.List;
import java.util.Map;

/**
 * 模具分析统计Service
 */
public interface IMouldAnalyseService {

    /**
     * 模具故障率统计
     *
     * @param workshopId 车间ID
     * @param moldTypeId 模具类型ID
     * @return
     */
    MoldFaultRateStatVO statMoldFaultRate(String workshopId, String moldTypeId);

    /**
     * 模具维修统计
     *
     * @param workshopId 车间ID
     * @return
     */
    WorkshopRepairStatVO moldRepairStat(String workshopId);

    /**
     * 统计工场所有模具状态下的模具统计数据
     *
     * @param workshopId 车间ID
     * @return
     */
    PieChartOptionDataVO statMouldStatus(String workshopId);

    /**
     * 进行模具分类月度成本变动统计分析
     *
     * @param workshopId 车间ID
     * @return
     */
    LineChartDataModel statMoldTypeMonthlyCostChange(String workshopId);

    /**
     * 获取模具故障时长统计
     *
     * @param param
     * @return
     */
    BarChartOptionModel getFaultDurationStat(Map<String, Object> param);

    /**
     * 模具故障分类次数统计
     *
     * @param param 包含月份、模具类别ID、所属铸造车间ID
     */
    FaultTopStatVO faultClassifyTimesStat(Map<String, Object> param);

    /**
     * 模具故障分类次数统计
     *
     * @param param 包含年份、模具类别ID、所属铸造车间ID
     */
    List<List<Object>> doMoldCostStat(Map<String, Object> param);

    /**
     * 模具故障次数TOP统计
     * 统计某段时间区间内份下的前TOP名发生故障的模具和次数
     *
     * @param param 包含查询起止时间段和TOP数
     * @return
     */
    FaultTopStatVO faultTimesTopStat(Map<String, Object> param);

}
